/*
 * fs.h
 *
 *  Created on: 22/09/2011
 *      Author: utn_so
 */

#ifndef FS_H_
#define FS_H_

#include <semaphore.h>

struct descriptor_t
{
	int						descriptorSoc;
	struct t_pedido*		pedidos;
	int						idDisco;
	int						estado;
	sem_t					contador;
	struct bit_map*			bitmap;
	struct descriptor_t *	siguiente;
};

struct t_pedido
{
	int						descriptorSoc; //quien lo pidio
	int						sector;
	unsigned char			type; //o podria ser int
	char					*buffer;
	struct t_pedido*		siguiente;
};

typedef enum {
	P_CONSOLA = 1,
	P_FS,
	P_LISTENER,
	P_PPD,
} t_proceso;

struct t_sockets
{
	int					fd;
	t_proceso			proceso;
	struct t_sockets	*siguiente;
};

//void* escucharPlaniYFS(void *params);

int agregarTablaDesc(int i, int idDisco);

int estaConectado(int fdCon, int idDisco);

int atenderFS(int fdCon);

int hayUnplani();

int existeFS(int fdCon);

int eliminarPlani(int idDisco);

int enviarAOtroPlani(int idDisco);

int cantidadPlani();

int descriptorDelPlani (int idDisco);

int idPlaniDelDescriptor(int pDescriptor);

int crearSockListener(int fdmax);

//void pollIn(int fd);

void agregarFdEnTablaSock(int fdCon, int tipoConexion);

//void atenderPoll();

void atenderListener(int fdPoll, int fdSocket);

int crearSockConsola();

#endif /* FS_H_ */

